package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController//返回值都是JSON串
@CrossOrigin   //解决跨域问题
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /*URL：/user/login
    * 参数:对象的json串
    * 返回值结果：SysResult对象
    * */
    @PostMapping("/login")
    public SysResult login(@RequestBody User user){

        String token = userService.login(user);
        if (StringUtils.hasLength(token)){
            //如果有数据则返回成功
            return SysResult.success(token);

        }
        //否则返回失败
        return SysResult.fail();
    }


    /* 需求：利用分页展现user列表数据
    * URL：/user/list    get
    * 参数：http://localhost:8091/user/list?query=查询关键字&pageNum=1&pageSize=10
    * 返回值：SysResult对象（pageResult对象）
    * */
    @GetMapping("/list")
    public SysResult getUserList(PageResult pageResult){

        pageResult = userService.getUserList(pageResult);

        return SysResult.success(pageResult);
    }

    /*
    * 需求：根据ID修改用户的状态信息
    * URL：/user/status/{id}/{status}
    * 参数：2个参数，用户对象接收
    * 返回值：SysResult对象
    * */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(User user){

        userService.updateStatus(user);
        return SysResult.success();
    }


    //增加用户
    @PostMapping("/addUser")
    public SysResult addUser(@RequestBody User user){
        userService.addUser(user);
        return SysResult.success(user);
    }

    //删除用户
    @DeleteMapping("/{id}")
    public SysResult deleteUser(@PathVariable Integer id){
        userService.deleteUser(id);
        return SysResult.success();
    }

    //查询要修改的用户的信息
    @GetMapping("{id}")
    public SysResult getUserById(@PathVariable Integer id){
        User user = userService.getUserById(id);
        return SysResult.success(user);
        /*try {
            User user = userService.getUserById(id);
            return SysResult.success(user);
        }catch (Exception e){
            //打印异常信息
            e.printStackTrace();
            return SysResult.fail();
        }*/

    }

    //修改用户信息
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){

        userService.updateUser(user);
        return SysResult.success();
    }




}
